package com.peppa.petshop.controller;

/**
 * @author SongTiantian
 * @create 2021-06-16-16:39
 */

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.peppa.petshop.service.GoodService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.sound.midi.SoundbankResource;
import java.io.File;
import java.util.Random;
import java.util.UUID;


@RestController
public class UploadFile {
    @Autowired
    private GoodService goodService;

    @ResponseBody
    /*@ResponseBody是作用在方法上的，@ResponseBody 表示该方法的返回结果直接写入 HTTP response body 中，
    一般在异步获取数据时使用【也就是AJAX】。
    注意：在使用 @RequestMapping后，返回值通常解析为跳转路径，但是加上 @ResponseBody 后返回结果不会被解析为跳转路径，
    而是直接写入 HTTP response body 中。 比如异步获取 json 数据，加上 @ResponseBody 后，会直接返回 json 数据。
    @RequestBody 将 HTTP 请求正文插入方法中，使用适合的 HttpMessageConverter 将请求体写入某个对象。
    */
    @RequestMapping("/uploadFile")
    public JSON uploadFile(MultipartFile file, HttpServletRequest request) {
        System.out.println("图片上传");
        String id = request.getParameter("goodId");
        Integer goodId = new Integer(id);
        JSONObject json=new JSONObject();
        String s = UUID.randomUUID().toString().replace("-","");
        String filePath = "F:\\code\\petshop01\\src\\main\\resources\\static\\images\\"+"good"+ goodId +"\\";  //上传到这个文件夹
        File file1 = new File(filePath);

        if (!file1.exists()) {
            file1.mkdirs();
        }
//        System.out.println(file.getOriginalFilename());
        String filename = file.getOriginalFilename();
        String suffix =filename.substring(filename.lastIndexOf("."));
        String finalFilePath = filePath + s+suffix;
        System.out.println(finalFilePath);
        File desFile = new File(finalFilePath);
        if (desFile.exists()) {
            desFile.delete();
        }
        String path ="/images/"+"good"+goodId+"/"+s+suffix;
        goodService.addImagesPath(goodId,path);
        try {
            file.transferTo(desFile);
            json.put("code",0);
        } catch (Exception e) {
            System.out.println(e.getMessage());
            json.put("code",1);
        }

        return json;
    }
}

